<?php

class UserController extends Controller
{

  public function actionCategoryList() {
    $categoriesDAO = new CategoriesDAO();
    $categoryList = $categoriesDAO->findAll();

    $this->_sendAjaxResponse(json_encode(array('status' => Constants::RESPONSE_SUCCESS, 'data' => $categoryList)));
  }

  public function actionImageList() {
    $cateId = Yii::app()->request->getParam('cateId');

    if ($cateId) {
      $imageDAO = new ImageDAO();
      $images = $imageDAO->findAllByCategory($cateId);

      foreach ($images as $key => $item) {
        $images[$key]['thumb'] = Yii::app()->params['domainName'] . $images[$key]['thumb'];
      }

      $this->_sendAjaxResponse(json_encode(array('status' => Constants::RESPONSE_SUCCESS, 'data' => $images)));
    } else {
      $this->_sendAjaxResponse(json_encode(array('status' => Constants::RESPONSE_ERROR)));
    }
  }

  public function actionDownload() {
    $imageId = Yii::app()->request->getParam('imageId');

    $imageDAO = new ImageDAO();
    $images = $imageDAO->findById($imageId);
    if ($images) {
      $filePath = APP_ROOT_DIR . Yii::app()->params['Path'] . $images['path'];

      $handle = fopen($filePath, "r");
      header('Content-type: ' . mime_content_type($filePath));
      header('Content-length: ' . filesize($filePath));

      fpassthru($handle);
      fclose($handle);
      Yii::app()->end();
    } else {
      $this->_sendAjaxResponse(json_encode(array('status' => Constants::RESPONSE_ERROR)));
    }
  }

  public function actionCommand() {
    $mobile = Yii::app()->request->getParam('mobile');
    $serial = Yii::app()->request->getParam('serial');

    if ($mobile || $serial) {
      $userDAO = new UsersDAO();
      $user = $userDAO->findById($mobile, $serial);
      $this->_sendAjaxResponse(json_encode(array('status' => Constants::RESPONSE_SUCCESS, 'data' => $user)));
    } else {
      $this->_sendAjaxResponse(json_encode(array('status' => Constants::RESPONSE_ERROR)));
    }
  }

  public function actionComplete() {
    $mobile = Yii::app()->request->getParam('mobile');
    $serial = Yii::app()->request->getParam('serial');

    if ($mobile || $serial) {
      $userDAO = new UsersDAO();
      $user = $userDAO->updateSendStatus($mobile, $serial);

      $this->_sendAjaxResponse(json_encode(array('status' => Constants::RESPONSE_SUCCESS)));
    }
  }

  public function actionRegister() {
    $mobile = Yii::app()->request->getParam('mobile');
    $serial = Yii::app()->request->getParam('serial');
    $network = Yii::app()->request->getParam('network');

    if ($mobile || $serial) {
      $userDAO = new UsersDAO();
      $user = $userDAO->findById($mobile, $mobile);

      if ($user) {
        $userDAO->delete($mobile, $serial);
      }

      $lastId = $userDAO->insert($mobile, $serial, $network);
      $this->_sendAjaxResponse(json_encode(array('status' => Constants::RESPONSE_SUCCESS, 'userid' => $lastId)));
    } else {
      $this->_sendAjaxResponse(json_encode(array('status' => Constants::RESPONSE_ERROR)));
    }
  }

  public function actionLogging() {
    $device = Yii::app()->request->getParam('deviceProduct');
    $androidVersion = Yii::app()->request->getParam('androidVersion');
    $trace = Yii::app()->request->getParam('stackTrace');

    Logger::error(sprintf("device: %s  verion: %s message: %s", $device, $androidVersion, $trace));
    $this->_sendAjaxResponse(json_encode(array('status' => Constants::RESPONSE_SUCCESS)));
  }

}

if(!function_exists('mime_content_type')) {

  function mime_content_type($filename) {

    $mime_types = array(
        'txt' => 'text/plain',
        'htm' => 'text/html',
        'html' => 'text/html',
        'php' => 'text/html',
        'css' => 'text/css',
        'js' => 'application/javascript',
        'json' => 'application/json',
        'xml' => 'application/xml',
        'swf' => 'application/x-shockwave-flash',
        'flv' => 'video/x-flv',

        // images
        'png' => 'image/png',
        'jpe' => 'image/jpeg',
        'jpeg' => 'image/jpeg',
        'jpg' => 'image/jpeg',
        'gif' => 'image/gif',
        'bmp' => 'image/bmp',
        'ico' => 'image/vnd.microsoft.icon',
        'tiff' => 'image/tiff',
        'tif' => 'image/tiff',
        'svg' => 'image/svg+xml',
        'svgz' => 'image/svg+xml',

        // archives
        'zip' => 'application/zip',
        'rar' => 'application/x-rar-compressed',
        'exe' => 'application/x-msdownload',
        'msi' => 'application/x-msdownload',
        'cab' => 'application/vnd.ms-cab-compressed',

        // audio/video
        'mp3' => 'audio/mpeg',
        'qt' => 'video/quicktime',
        'mov' => 'video/quicktime',

        // adobe
        'pdf' => 'application/pdf',
        'psd' => 'image/vnd.adobe.photoshop',
        'ai' => 'application/postscript',
        'eps' => 'application/postscript',
        'ps' => 'application/postscript',

        // ms office
        'doc' => 'application/msword',
        'rtf' => 'application/rtf',
        'xls' => 'application/vnd.ms-excel',
        'ppt' => 'application/vnd.ms-powerpoint',

        // open office
        'odt' => 'application/vnd.oasis.opendocument.text',
        'ods' => 'application/vnd.oasis.opendocument.spreadsheet',
    );

    $ext = strtolower(array_pop(explode('.',$filename)));
    if (array_key_exists($ext, $mime_types)) {
      return $mime_types[$ext];
    }
    elseif (function_exists('finfo_open')) {
      $finfo = finfo_open(FILEINFO_MIME);
      $mimetype = finfo_file($finfo, $filename);
      finfo_close($finfo);
      return $mimetype;
    }
    else {
      return 'application/octet-stream';
    }
  }
}